//
// Created by wxd on 2025/9/11.
//

#pragma once

#ifndef IMESH_H
#define IMESH_H

#include <string>
#include <memory>
#include "../glFramework/geo/BaseGeometry.h"
#include "../glFramework/demo/material/Material.h"

enum class MeshType {
    NONE, PLANE, CUBE, SPHERE, TRIANGLE
};

class IMesh {
public:
    virtual ~IMesh() = default;

    virtual std::string getTraceId() const = 0;
    virtual std::string getName() const = 0;
    virtual MeshType getType() const = 0;

    virtual void setGeometry(std::unique_ptr<BaseGeometry> geo) = 0;
    virtual void setMaterial(std::unique_ptr<Material> material) = 0;
};

#endif //IMESH_H
